import { mobile } from '@/utils/validate'
import API from '@/api/user'

function validateAccount(value) {
  // 第一个判断是 非空校验
  if (!value) {
    return '请输入用户名'
    // 第二个判断是 规则校验
  } else if (!/^[a-zA-Z]\w{5,19}$/.test(value)) {
    return '字母开头且6-20个字符'
  }
  return true
}

export default {
  /**
   * 用户名校验
   * @return {string|boolean}
   */
  account(value) {
    return validateAccount(value)
  },
  /**
   * 用户校验且校验唯一性
   */
  async accountApi(value) {
    debugger
    const res = validateAccount(value)
    if (res !== true) return res

    // 服务端校验
    const data = await API.userAccountCheck(value)
    if (data.result.valid) {
      return '用户名已存在'
    }
    return true
  },
  password(value) {
    if (!value) {
      return '请输入密码'
    } else if (!/^[\w\W]{6,24}$/.test(value)) {
      return '密码格式6-24个字符'
    }
    return true
  },
  /**
   * 确认密码校验
   * @param value 确认密码
   * @param form  form表单对象数据对象
   * @return {string|boolean}
   */
  rePassword(value, { form }) {
    if (!value) {
      return '请输入密码'
    } else if (!/^[\w\W]{6,24}$/.test(value)) {
      return '密码格式6-24个字符'
    }
    if (value !== form.password) return '需要和密码保持一致'
    return true
  },
  mobile(value) {
    const list = mobile(value)
    if (list.msg !== '') {
      return list.msg
    }
    return true
  },
  code(value) {
    if (!value) {
      return '请输入验证码'
    } else if (!/^[a-zA-Z0-9]{6}$/.test(value)) {
      return '验证码格式错误, 位数为6'
    }
    return true
  },
  isAgree(value) {
    if (!value) {
      return '请勾选登录协议'
    }
    return true
  }
}
